from shuangti.Item01.AIManager import AIManager
from shuangti.Item01.DataAnalysisAssistant import DataAnalysisAssistant
from shuangti.Item01.ImageGenerationAssistant import ImageGenerationAssistant
from shuangti.Item01.TextGenerationAssistant import TextGenerationAssistant
from shuangti.Item01.TranslationAssistant import TranslationAssistant
from shuangti.Item01.VoiceAssistant import VoiceAssistant


class AIAssistantConsole:
    """AI助手管理器控制台，提供用户交互界面"""
    def __init__(self):
        self.manager = AIManager(capacity=10)  # 初始化管理器（容量10）
        self.init_default_assistants()  # 加载默认助手数据
        self.scanner = None  # 输入扫描器（后续初始化）

    def init_default_assistants(self):
        """初始化文档示例中的默认助手（101-105）"""
        # 101: 小智（语音助手）
        self.manager.add_assistant(VoiceAssistant(
            aid="101", name="小智", version="v1.2", is_online=True,
            ability_score=85, supported_commands="播放音乐、查询天气、设置闹钟"
        ))
        # 102: 文小助（文本助手）
        self.manager.add_assistant(TextGenerationAssistant(
            aid="102", name="文小助", version="v2.0", is_online=True,
            ability_score=92, supported_text_types="诗歌、文案、代码、报告"
        ))
        # 103: 图灵（图片生成助手）
        self.manager.add_assistant(ImageGenerationAssistant(
            aid="103", name="图灵", version="v1.5", is_online=False,
            ability_score=88, supported_resolutions="1024x1024、2048x2048"
        ))
        # 104: 数小析（数据分析助手）
        self.manager.add_assistant(DataAnalysisAssistant(
            aid="104", name="数小析", version="v1.0", is_online=True,
            ability_score=79, supported_formats="CSV、Excel、JSON"
        ))
        # 105: 翻译精灵（翻译助手）
        self.manager.add_assistant(TranslationAssistant(
            aid="105", name="翻译精灵", version="v2.1", is_online=False,
            ability_score=95, supported_languages="中-英、中-日、中-法"
        ))

    def print_menu(self):
        """打印系统菜单"""
        print("========== AI助手管理器 ==========")
        print("1. 查看所有AI助手列表")
        print("2. 根据ID查询助手详情")
        print("3. 添加新的AI助手")
        print("4. 根据ID修改助手信息")
        print("5. 删除AI助手（按ID）")
        print("6. 启动AI助手服务")
        print("7. 停止AI助手服务")
        print("8. 为AI助手分配任务")
        print("9. 显示系统统计信息")
        print("0. 退出系统")

    def show_all_assistants(self):
        """展示所有AI助手列表"""
        assistants = self.manager.get_all_assistants()
        if not assistants:
            print("当前无AI助手数据")
            return
        print("所有AI助手列表：")
        for idx, assistant in enumerate(assistants, 1):
            print(f"{idx}. {assistant}")

    def query_assistant_by_id(self):
        """根据ID查询助手详情"""
        aid = input("请输入要查询的AI助手ID: ").strip()
        assistant = self.manager.get_assistant_by_id(aid)
        if not assistant:
            print(f"❌ 未找到ID为{aid}的助手")
        else:
            print(assistant.get_detail_info())

    def add_new_assistant(self):
        """添加新AI助手（引导用户输入信息）"""
        print("添加新AI助手")
        try:
            # 输入基础属性
            aid = input("请输入ID: ").strip()
            name = input("请输入名称: ").strip()
            version = input("请输入版本号: ").strip()
            online_input = input("是否在线？(1-是, 0-否): ").strip()
            is_online = (online_input == "1")
            score_input = input("请输入能力评分(0-100): ").strip()
            ability_score = int(score_input)

            # 选择助手类型并输入子类属性
            print("请选择助手类型：1-数据分析助手 2-图片生成助手 3-文本助手 4-翻译助手 5-语音助手")
            type_input = input().strip()
            new_assistant = None

            if type_input == "1":
                formats = input("请输入支持的数据格式（如CSV,Excel）: ").strip()
                new_assistant = DataAnalysisAssistant(aid, name, version, is_online, ability_score, formats)
            elif type_input == "2":
                resolutions = input("请输入支持的分辨率（如1024x1024）: ").strip()
                new_assistant = ImageGenerationAssistant(aid, name, version, is_online, ability_score, resolutions)
            elif type_input == "3":
                text_types = input("请输入支持的文本类型（如诗歌,文案）: ").strip()
                new_assistant = TextGenerationAssistant(aid, name, version, is_online, ability_score, text_types)
            elif type_input == "4":
                languages = input("请输入支持的语言对（如中-英,中-日）: ").strip()
                new_assistant = TranslationAssistant(aid, name, version, is_online, ability_score, languages)
            elif type_input == "5":
                commands = input("请输入支持的语音指令（如播放音乐,查询天气）: ").strip()
                new_assistant = VoiceAssistant(aid, name, version, is_online, ability_score, commands)
            else:
                print("❌ 无效类型，添加失败")
                return

            # 调用管理器添加助手
            print(self.manager.add_assistant(new_assistant))
        except ValueError as e:
            if "invalid literal" in str(e).lower():
                print("❌ 能力评分必须为数字，添加失败")
            else:
                print(f"❌ {e}，添加失败")
        except Exception:
            print("❌ 输入异常，添加失败")

    def update_assistant(self):
        """修改AI助手信息"""
        print("修改AI助手数据")
        aid = input("请输入ID: ").strip()
        prompt = "可修改属性列表为：name,type,version,online,score\n请输入要修改的属性和值，用空格分割: \n"
        update_input = input(prompt).strip().split(maxsplit=1)  # 按第一个空格分割（值允许含空格）
        if len(update_input) != 2:
            print("❌ 输入格式错误，请按“属性 值”格式输入（如score 100）")
            return
        property_, value = update_input
        print(self.manager.update_assistant(aid, property_, value))

    def delete_assistant(self):
        """删除AI助手"""
        aid = input("请输入要删除的AI助手ID: ").strip()
        print(self.manager.delete_assistant(aid))

    def start_assistant(self):
        """启动AI助手服务"""
        aid = input("请输入要启动的AI助手ID: ").strip()
        print(self.manager.start_assistant(aid))

    def stop_assistant(self):
        """停止AI助手服务"""
        aid = input("请输入要停止的AI助手ID: ").strip()
        print(self.manager.stop_assistant(aid))

    def assign_task(self):
        """为AI助手分配任务"""
        aid = input("请输入目标AI助手ID: ").strip()
        task_content = input("请输入任务内容: ").strip()
        print(self.manager.assign_task(aid, task_content))

    def show_system_stats(self):
        """展示系统统计信息"""
        print(self.manager.get_system_stats())
        print(self.manager.get_capacity_info())

    def run(self):
        """启动控制台程序"""
        print("欢迎使用 AI助手管理器 v1.0")
        self.scanner = __import__("sys").stdin  # 初始化输入扫描器
        while True:
            self.print_menu()
            print("===================================")
            choice = input("请选择操作: ").strip()

            # 处理菜单选择
            if choice == "1":
                self.show_all_assistants()
            elif choice == "2":
                self.query_assistant_by_id()
            elif choice == "3":
                self.add_new_assistant()
            elif choice == "4":
                self.update_assistant()
            elif choice == "5":
                self.delete_assistant()
            elif choice == "6":
                self.start_assistant()
            elif choice == "7":
                self.stop_assistant()
            elif choice == "8":
                self.assign_task()
            elif choice == "9":
                self.show_system_stats()
            elif choice == "0":
                print("感谢使用，再见！")
                break
            else:
                print("❌ 无效操作，请重新选择！")

            # 每次操作后换行分隔，提升可读性
            print("\n" + "=" * 50 + "\n")

# 启动程序
if __name__ == "__main__":
    console = AIAssistantConsole()
    console.run()